CC        = gcc
BE_FLAGS  = -c -w -g3 -DELINUX -fsigned-char
FE_FLAGS  = -c -g3 -DLINUX_OS

O_FILES = \
	be_alloc.o \
	be_callc.o \
	be_execute.o \
	be_inline.o \
	be_machine.o \
	be_main.o \
	be_rterror.o \
	be_runtime.o \
	be_symtab.o \
	be_syncolor.o \
	be_task.o \
	be_w.o \
	fe_emit.o \
	fe_error.o \
	fe_main.o \
	fe_parser.o \
	fe_scanner.o \
	fe_symtab.o \
	fe_transform.o

all : $(O_FILES)
	$(CC) $(O_FILES) -lm -ldl -o gyroe

clean :
	rm -f *.o *~ ex.err gyroe


be_alloc.o : ./be_alloc.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O2 be_alloc.c

be_callc.o : ./be_callc.c
	$(CC) $(BE_FLAGS) -fno-defer-pop -O2 be_callc.c

be_execute.o : ./be_execute.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O2 be_execute.c

be_inline.o : ./be_inline.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O2 -finline-functions be_inline.c

be_machine.o : ./be_machine.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O2 be_machine.c

be_main.o : ./be_main.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O2 be_main.c

be_rterror.o : ./be_rterror.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O -Os -fno-inline-functions be_rterror.c

be_runtime.o : ./be_runtime.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O2 be_runtime.c

be_symtab.o : ./be_symtab.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O2 be_symtab.c

be_syncolor.o : ./be_syncolor.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O -Os -fno-inline-functions be_syncolor.c

be_task.o : ./be_task.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O2 be_task.c

be_w.o : ./be_w.c
	$(CC) $(BE_FLAGS) -fomit-frame-pointer -O2 be_w.c


fe_emit.o :  ./fe_shared.h ./fe_emit.c ./fe_emit.h
	$(CC) $(FE_FLAGS) fe_emit.c

fe_error.o :  ./fe_shared.h ./fe_error.c ./fe_error.h
	$(CC) $(FE_FLAGS) fe_error.c

fe_main.o :  ./fe_shared.h ./fe_main.c ./fe_main.h
	$(CC) $(FE_FLAGS) fe_main.c

fe_parser.o :  ./fe_shared.h ./fe_parser.c ./fe_parser.h
	$(CC) $(FE_FLAGS) fe_parser.c

fe_scanner.o :  ./fe_shared.h ./fe_scanner.c ./fe_scanner.h
	$(CC) $(FE_FLAGS) fe_scanner.c

fe_symtab.o :  ./fe_shared.h ./fe_symtab.c ./fe_symtab.h
	$(CC) $(FE_FLAGS) fe_symtab.c

fe_transform.o : ./fe_shared.h ./fe_transform.c ./fe_transform.h
	$(CC) $(FE_FLAGS) fe_transform.c

.PHONY : all clean

